import vue from '@vitejs/plugin-vue';
import { defineConfig } from 'vite';

// 路径处理插件,让@、~这些可以替代路径
import { fileURLToPath, URL } from 'url';

//自动生成路由插件
import Pages from 'vite-plugin-pages';

//自动引入Hook插件
import AutoImport from 'unplugin-auto-import/vite';
//自动引入组件插件
import Components from 'unplugin-vue-components/vite';

//引入路由规则,不需要验证的页面
import rules from './src/router/rules';

// https://vite.dev/config/
export default defineConfig({

    // base: './',

    plugins: [
        vue(),
        Pages({
            //默认会扫描`src/pages`目录下的`.vue`文件
            //也可以自定义目录路径
            dirs: 'src/views',

            //配置路由命名规则（可选）
            extendRoute(route) {
                route = {
                    ...route,
                    meta: {
                        IsLogin: true
                    }
                }
                //判断是否需要验证，不需要验证走这
                if (rules.includes(route.path)) {
                    route.meta.IsLogin = false;
                }

                return route;
            },
        }),

        AutoImport({
            // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
            imports: ['vue', 'vue-router', 'pinia', 'vue-i18n'],
            dts: "src/auto-imports.d.ts",
            dirs: ['src/stores', 'src/composables']
        }),

        Components({
            // 自动导入的组件目录
            dirs: ['src/components'],
            // 组件的有效文件扩展名
            extensions: ['vue'],
        }),
    ],

    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url)),
        }
    },

    // 服务器的配置
    server: {
        // 反向代理
        proxy: {
            '/games': {
                // target: 'http://www.schoolwall.com/games', // 反向代理的目标地址
                target: 'https://www.schoolwallback.zhouzhihua.cn/games',// 线上
                changeOrigin: true, // 允许跨域
                // 替换掉shop前缀 防止多个shop地址
                rewrite: (path) => path.replace(/^\/games/, ''),
            },
        },
    },
})
